package main

import (
	"fmt"
)

/*
	至少是其他数字两倍的最大数
在一个给定的数组nums中，总是存在一个最大元素 。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是，则返回最大元素的索引，否则返回-1。

示例 1:
输入: nums = [3, 6, 1, 0]
输出: 1
解释: 6是最大的整数, 对于数组中的其他整数,
6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
 */
func dominantIndex(nums []int) int {
	//小于等于一个元素 直接输出
	if len(nums)<=1{
		return 0
	}
	// 初始化 次大为0 最大为1
	lastMax,max:=0,nums[0]
	// 最大的下标
	maxIndex:=0
	// 遍历
	for i:=1;i<len(nums);i++{
		// 如果num[i]比max大，max变为次大，num[i]变为最大
		if nums[i]>max{
			lastMax, max = max, nums[i]
			maxIndex=i
			// 如果比lastMax大 替换
		}else if nums[i]>lastMax{
			lastMax=nums[i]
		}
	}
	// 判断
	if max>=lastMax*2{
		return maxIndex
	}

	return -1
}

func main() {
	nums := []int{3, 6, 1, 0}
	fmt.Println(dominantIndex(nums))
}
